home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / LANG / C / GCC / CLIB / !clib / h / stdlib < prev    next >
Text File  |  1997-03-23  |  7KB  |  201 lines

  1. /* stdlib.h
  2.  
  3.    For use with the GNU compilers and the SharedCLibrary.
  4.    (c) Copyright 1997, Nick Burrett.  */
  5.  
  6.  
  7. #ifndef __STDLIB_H
  8. #define __STDLIB_H
  9.  
  10. #ifndef __STDDEF_H
  11. #include <stddef.h>
  12. #endif
  13.  
  14. #ifndef __ERRNO_H
  15. #include <errno.h>
  16. #endif
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21.  
  22. /* GCC has various useful declarations that can be made with the
  23.    __attribute__ syntax.  Disable its use for other compilers.  */
  24. #ifndef __GNUC__
  25. #define __attribute__(x) /* Ignore.  */
  26. #endif
  27.  
  28. /* Returned by `div'.  */
  29. typedef struct div_t
  30. {
  31.   int quot, rem;
  32. } div_t;
  33.  
  34. /* Returned by `ldiv'.  */
  35. typedef struct ldiv_t
  36. {
  37.   long int quot, rem;
  38. } ldiv_t;
  39.  
  40. #ifdef __EXIT_FAILURE
  41. #define EXIT_FAILURE __EXIT_FAILURE
  42.  
  43. #else
  44. /* Failing exit status.  */
  45. #define EXIT_FAILURE 1
  46. #endif
  47. /* Successful exit status.  */
  48. #define EXIT_SUCCESS 0
  49.  
  50. /* The largest number rand will return (same as INT_MAX).  */
  51. #define RAND_MAX 0x7fffffff
  52.  
  53. #define _ANSI_RAND_MAX 0x7fff
  54.  
  55. /* Maximum length of a multibyte character in the current locale.  */
  56. #define MB_CUR_MAX 1
  57.  
  58. /* Similar to the strtod function, except that it need not detect
  59.    overflow and underflow errors.  */
  60. extern double atof (const char *string);
  61.  
  62. /* Similar to the strtol function with a base argument of 10,
  63.    except that it need not detect overflow errors.  */
  64. extern long int atol (const char *string);
  65. /* Similar to atol() but it returns an 'int' instead of a 'long int'.  */
  66. extern int atoi (const char *string);
  67.  
  68. /* The strtod (string-to-double) function converts the initial part
  69.    of 'string' to a floating-point number.
  70.  
  71.    If 'tailptr' is not NULL, strtol will store a pointer to the remaining
  72.    characters in the string in '*tailptr'.  */
  73. extern double strtod (const char *string, char **tailptr);
  74.  
  75. /* The strtol (string-to-long) function converts the initial part
  76.    of 'string' to a signed integer, which is returned as a value
  77.    of 'long int'.  If 'base' is zero, decimal is assumed, unless
  78.    the digits being with '0' (specifying octal) or '0x'/'0X' (specifying
  79.    hexadecimal).  Otherwise 'base' must have a value between 2 and 35.
  80.  
  81.    If 'tailptr' is not NULL, strtol will store a pointer to the remaining
  82.    characters in the string in '*tailptr'.  */
  83. extern long int strtol (const char *string, char **tailptr, int base);
  84.  
  85. /* The strtoul (string-to-unsigned-long) function is like strtol
  86.    except it deals with usigned numbers.  No + or - sign may
  87.    appear before the number.  */
  88. extern unsigned long int strtoul(const char *string, char **tailptr, int base);
  89.  
  90. /* Returns the next pseudo-random number in the series. The value is
  91.    in the range from 0 to RAND_MAX.  */
  92. extern int rand (void);
  93.  
  94. /* Establish 'seed' as the seed for a new series of pseudo-random
  95.    numbers.  The default seed is 1.  Truly random numbers can
  96.    be achieved by srand (time (0)).  */
  97. extern void srand (unsigned int seed);
  98.  
  99. extern int _ANSI_rand (void);
  100. extern void _ANSI_srand (unsigned int seed);
  101.  
  102. /* Allocate a block long enough to contain a vector of 'count'
  103.    elements, each of size 'eltsize'. Its contents are cleared
  104.    to zero before 'calloc' returns.  */
  105. extern void *calloc(size_t count, size_t eltsize);
  106.  
  107. /* Deallocates the block of storage pointed at by 'ptr'.  */
  108. extern void free (void *ptr);
  109.  
  110. /* Return a pointer to a newly allocated block 'size' bytes
  111.    long, or a null pointer if the block could not be allcated.  */
  112. extern void *malloc (size_t size);
  113.  
  114. /* Change the size of the block whose address is 'ptr' to be 'newsize'.  */
  115. extern void *realloc (void *ptr, size_t newsize);
  116.  
  117. /* Cause abnormal program termination.  This function raises the
  118.    signal SIGABRT.  */
  119. extern void abort(void) __attribute__ ((__volatile__));
  120.  
  121. /* Register the function 'function' to be called at normal program
  122.    termination.  The function is called with no arguments.  */
  123. extern int atexit (void (*function)(void));
  124.  
  125. /* Terminate a process with status 'status'. This function does
  126.    not return.  This function executes all functions registered
  127.    with atexit().  */
  128. extern void exit (int status) __attribute__ ((__volatile__));
  129.  
  130. /* Return a string that is the value of the environment variable
  131.    'name'.  */
  132. extern char *getenv(const char *name);
  133.  
  134. /* Execute 'command'. See _kernel_system () in kernel.h.  */
  135. extern int system (const char *command);
  136.  
  137. /* Search the sorted array 'array' for an object that is equivalent
  138.    to 'key'. The array contains 'count' elements, each of which is
  139.    size 'size' bytes.
  140.  
  141.    The 'compare' function is used to perform the comparison.  This
  142.    function is called with two pointer arguments and should return
  143.    an integer less than, equal to, or greater than zero corresponding
  144.    to whether its first argument is considered less than, equal to,
  145.    or greater than its second argument.  */
  146. extern void *bsearch (const void *key, const void *array,
  147.                          size_t count, size_t size,
  148.                          int (*compare)(const void *, const void *));
  149.  
  150. /* Sort the array 'array'. The array contains 'count' elements,
  151.    each of which is of size 'size'.
  152.  
  153.    The 'compare' function is similar in functionality to the bsearch
  154.    compare function.  */
  155. extern void qsort (void *array, size_t count, size_t size,
  156.                       int (*compare)(const void *, const void *));
  157.  
  158. /* Return the non-negative version of x.  */
  159. extern int abs(int x) __attribute__ ((__const__));
  160.  
  161. /* Integer divide x by y returning the quotient and remainder in
  162.    a div_t structure.  */
  163. extern div_t div(int x, int y) __attribute__ ((__const__));
  164.  
  165. /* Return the non-negative version of x. This is the long int equivalent
  166.    of abs().  */
  167. extern long int labs (long int x) __attribute__ ((__const__));
  168.  
  169. /* Integer divide x by y returning the quotient and remainder in
  170.    a ldiv_t structure.  This is the long int version of div().  */
  171. extern ldiv_t ldiv(long int , long int ) __attribute__ ((__const__));
  172.  
  173. /* Return the number of bytes that make up the multibyte character
  174.    beginning at 'string', never examining more than 'size' bytes.  */
  175. extern int mblen (const char *string, size_t size);
  176.  
  177. /* Convert the first multibyte character beginning at 'string' to
  178.    its corresponding wide character code.  The result is stored
  179.    in '*result'.  mbtowc never examines more than 'size' bytes.  */
  180. extern int mbtowc(wchar_t *result, const char *string, size_t size);
  181.  
  182. /* Convert the wide character code 'wchar' to its corresponding
  183.    multibyte character sequence and store the result in 'string'.  */
  184. extern int wctomb (char *string, wchar_t wchar);
  185.  
  186. /* Convert a string of multibyte characters (string) to a
  187.    wide character array (string), storing not more than 'size'
  188.    wide characters.  */
  189. extern size_t mbstowcs(wchar_t *wstring, const char *string, size_t size);
  190.  
  191. /* Convert the null-terminated wide character array 'wstring'
  192.    into a string containing multibyte characters, storing not
  193.    more than 'size' bytes.  */
  194. extern size_t wcstombs(char *string, const wchar_t *wstring, size_t size);
  195.  
  196. #ifdef __cplusplus
  197. }
  198. #endif
  199.  
  200. #endif
  201.